package com.service.product;

import java.util.List;

import com.entity.Collect;
import com.entity.Product;
import com.entity.ProductCategory;
import com.utils.CartUtil;
import com.utils.Pager;

/**
 * 商品接口类
 * @author 
 *
 */
public interface ProductService {
	/**
	 * 查询分类
	 * @param type
	 * @return
	 */
	public List<ProductCategory> finSelectProductCategory(int type);
	
	/**
	 * 查询所有商品信息
	 * @return
	 */
	public List<Product> finSelectProductAll();
	
	/**
	 * 根据id查找对应的id商品的信息
	 * @param id
	 * @return
	 */
	public Product finBtnProduct(int id);
	
	/**
	 * 查询分类的type值
	 * @param id
	 * @return
	 */
	public int finProductCount(int id);
	
	/**
	 * 查询对应分类id的商品
	 * @param type
	 * @param categoryid
	 * @return
	 */
	public List<Product> finPageProduct(int categoryid, Pager page) ;
	
	/**
	 * 查询商品对应的分类的商品总数
	 * @param type
	 * @return
	 */
	public int finPageCount(int id);
	
	public int finLikeCount(String name);
	
	/**
	 * 模糊查询
	 * @param name
	 * @return
	 */
	public List<Product> finLikeProduct(String name, Pager page);
	
	/**
	 * 用用户收藏夹的商品id去查找商品表的商品信息
	 * @param list
	 * @return
	 */
	public List<Product> CollectProduct(List<Collect> list);
	
	/**
	 * 减少库存
	 * @param proid
	 * @return
	 */
	public int finUpdatePro(int stock ,int proid);

	CartUtil calculate(CartUtil cart) throws Exception;

	CartUtil modifyShoppingCart(String productId, String quantityStr, CartUtil cart) throws Exception;
	
	/**
	 * 查询商品的总记录数
	 * @return
	 */
	public int finProCount();
	
	/**
	 * 查询分类的总记录数
	 * @return
	 */
	public int finCategoryCount();
	
	/**
	 * 分页查询分类信息
	 * @param page
	 * @return
	 */
	public List<ProductCategory> getProductCategoryAll(Pager page);
	
	/**
	 * 删除一条商品分类
	 * @param id
	 * @return
	 */
	public int getdParentId(String type , int id);
	
	/**
	 * 根据删除的商品分类父ID编号，去查询一遍外键表中是否有数据！
	 * @param parentId
	 * @return
	 */
	public int findParentId(int parentId);
	
	/**
	 * 根据Id删除商品信息！
	 * @param id
	 * @return
	 */
	public int deleteEasybuyProductCategoryById(int id);
}
